package myreflect4;

import java.lang.reflect.Field;

public class ReflectDemo1 {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException {
        // method1(); // 所有公共成员变量对象
        // method2(); // 所有成员变量对象
        // method3(); // 单个公共成员变量对象
        // method4(); // 单个成品弯量对象
    }

    private static void method4() throws ClassNotFoundException, NoSuchFieldException {
        // Field getDeclaredrField (String name) 返回单个成品弯量对象
        // 1.获取class对象
        Class<?> clazz = Class.forName("myreflect4.Student");
        // 2.获取money成员变量
        System.out.println(clazz.getDeclaredField("money"));
    }

    private static void method3() throws ClassNotFoundException, NoSuchFieldException {
        // Field getField (string name):         返回单个公共成员变量对象
        // 1.获取class对象
        Class<?> clazz = Class.forName("myreflect4.Student");
        // 2.获取name这个成员变量并打印
        System.out.println(clazz.getField("name"));
        // System.out.println(clazz.getField("money")); // 报错，因为money是私有的
    }

    private static void method2() throws ClassNotFoundException {
        // Field[] getDeclaredFields():          返回所有成员变量对象的数组
        // 1.获取class对象
        Class<?> clazz = Class.forName("myreflect4.Student");
        // 2.获取Field对象,遍历
        for (Field field : clazz.getDeclaredFields()) {
            System.out.println(field);
        }
    }

    private static void method1() throws ClassNotFoundException {
        // Field[] getFields():                  返回所有公共成员变量对象的数组
        // 1.获取class对象
        Class<?> clazz = Class.forName("myreflect4.Student");
        // 2.获取Field对象,遍历
        for (Field field : clazz.getFields()) {
            System.out.println(field);
        }
    }
}
